Tableau DesktopからLookerのExploreを参照してみた
さがらです。
パブリックプレビューですが、Tableau DesktopからLookerに接続するためのコネクタとして「Looker–Tableau Connector」が公開されています。
このコネクタを試してみたので、本記事でまとめてみます。
検証環境
- Tableau Desktop:2024.1.0
- Looker:24.8.21(Original版 ※Google Cloud Core版ではない以前からある形式)
Looker側の事前準備
まずはじめに、Looker側の準備として以下2つを行います。
- SQL Interface機能を有効化する
- LookerインスタンスにTableau OAuthアプリを追加する
SQL Interface機能を有効化する
SQL Interface機能ですが、JDBCを使用してTableauなどのサードパーティアプリケーションでLookMLモデルにアクセスさせることを可能にする機能です。
Lookerの、Admin
→Labs
からSQL Interface
機能を有効化すればOKです。
LookerインスタンスにTableau OAuthアプリを追加する
続いて、Tableauとの認証を行うためのアプリとしてTableau OAuthアプリを追加する必要があります。
まず、Lookerインスタンス上でAPI Explorerをインストールすることが必要です。Looker Marketplaceからインストールが可能です。下記のブログも参考になると思います。
API Explorerのインストールを終えたら、API Explorerを立ち上げます。
Search欄でRegister OAuth App
と入力し、表示されたRegister OAuth App
をクリックします。
表示されたページの右上のRun It
を押します。
client_guid
とbody
に以下の内容を入力し、I understand that this API endpoint will change data.
にチェックを入れ、Run
を押します。
client_guid: 35FBB268-0CB0-4822-AFE3-28638C1C6269 body: { "redirect_uri": "http://localhost:55556/Callback", "display_name": "Tableau Desktop", "description": "Tableau Desktop client for JDBC Server", "enabled": true, "group_id": "" }
これでTableau OAuthアプリの追加は完了なのですが、動作確認もしてみます。
API ExplorerでGet OAuth Client App
と検索して表示された結果をクリックし、Run It
を押します。
cliend_guid
に35FBB268-0CB0-4822-AFE3-28638C1C6269
と入力し、Run
を押します。
これでResponseタブに切り替わった後、下図のように200: OK
のレスポンスが得られていたらOKです。
Tableau Desktop側の事前準備
次にTableau Desktop側の事前準備ですが、以下2つを行う必要があります。
- Tableau connector (.taco) fileのダウンロードと保存
- JDBC driver (looker.jar) fileのダウンロードと保存
Tableau connector (.taco) fileのダウンロードと保存
まず、Tableau connector (.taco) fileのダウンロードします。
公式Docに記載のlooker-jdbc-v0.2.0.tacoをクリックしてダウンロードしてください。
その後、使用しているOSに応じて以下のフォルダにダウンロードしたファイルを保存してください。
- Windows: C:\Users\[Windows User]\Documents\My Tableau Repository\Connectors
- MacOS: /Users/[user]/Documents/My Tableau Repository/Connectors
私はWindowsユーザーなので、保存後このようになりました。
JDBC driver (looker.jar) fileのダウンロードと保存
まず、JDBC driver (looker.jar) fileのダウンロードを行います。
https://github.com/looker-open-source/calcite-avatica/releasesに移動し、最新バージョンのavatica-<release_number>-looker.jar
ファイルをダウンロードします。
その後、使用しているOSに応じて以下のフォルダにダウンロードしたファイルを保存してください。
- Windows: C:\Program Files\Tableau\Drivers
- MacOS: /Library/JDBC or ~/Library/JDBC
私はWindowsユーザーなので、保存後このようになりました。
Tableau DesktopからLookerに接続する
ここまでで事前準備は完了したので、Tableau DesktopからLookerに接続してみます!
Tableau Desktopを起動し、接続先としてGoogleによるLooker JDBC
を選択します。
以下の情報を入力し、サインイン
を押します。
- Server:`https://`を除いた、LookerインスタンスURL。`example.cloud.looker.com`など
- Port:
443
- Authentication:
OAuth
- OAuth Instance Url:`https://`含むLookerインスタンスURL。`https://example.cloud.looker.com`など
ブラウザが立ちあがりLookerの認証画面が表示されるため、Allow
を押します。
この画面が表示されたら、Tableau DesktopからLookerへの接続は完了です!
Tableau Desktop上でグラフ作成してみる
使用するModel・Exploreの選択
まず、Tableau Desktop上で使用するデータソースを決める必要があります。
はじめにスキーマを選択します。スキーマは、LookerでいうModelが該当しています。
次にテーブルを選択してドラッグ&ドロップします。テーブルは、LookerでいうExploreが該当しています。
選択を終えると、このように表示されました。
ちなみに、今すぐ更新
を押すとエラーになりました。これはExplore上で定義したすべてのdimensionとmeasureを選択した状態のデータを求めているので、Lookerが返す結果は5000行という上限もあるため、このエラーは避けられなそうですね…
グラフを作成してみる
では、少しグラフを作ってみたいと思います。
各フィールドは、<view名>.<field名>
で表示されています。LookerでいうdimensionがTableau上でもディメンションとして扱われ、LookerでいうmeasureがTableau上でもメジャーとして扱われています。
1つ目のグラフとして、下図のdimensionとmeasureを使って、Lookerのデフォルトでは作成が難しいツリーマップを作成してみました。
2つ目のグラフとして、1つ目よりも少し複雑な条件式を用いたdimensionとmeasureを用いて、簡易的なファネル分析を行えるグラフを作成してみました。
注意点
まだパブリックプレビューということもあるのですが、気になる点もありました。
Always Filterを設定していると、何を選択してもエラーになってしまう
LookerではAlways Filterという形でExploreに対して特定のフィールドで必ずフィルタを行うように設定が出来るのですが、Always Filterを設定していると何を選択してもエラーが返ってきました。
LookMLのtype:locationはエラーとなる
Lookerでは緯度と経度を持つカラムを指定することで定義できるtype:location
のdimensionがあるのですが、これをTableau上で選択するとエラーとなりました。
LookMLのtype:tierがエラーとなる
Lookerでは、下図のように値を配列形式で並べて、各値の間に含まれる値をグルーピング出来るtype:tier
のdimensionがあるのですが、これ単体の選択だとエラーにならないのですが、1つでもメジャーを追加するとエラーとなりました。
LookMLで定義したlabelが表示されない
Lookerではlabelという形で、エンドユーザーによりわかりやすい命名に変更して表示させることが可能ですが、LookMLで定義したlabelは表示されませんでした。
- Lookerでの定義
- Tableau上の表示
最後に
Tableau DesktopからLookerに接続できるコネクタ「Looker–Tableau Connector」を試してみました。
LookML上で多少の計算式・条件式を含んだdimensionやmeasureを定義していても、Tableau上で可視化できるのは良かったですね。「LookerをSemantic Layerとして使えている」と感じました。
あとは、記事中でも書いたようにAlways Filterやtype:tierのdimensionなどLooker特有の機能を使っているとTableau側でうまく表示できない所がありましたので、このあたりは一般提供時に改善されると嬉しいですね!